Da se upoznamo sa osnovama Shiny aplikacije
Da rekreiramo web aplikaciju repopsi
Da publikujemo aplikaciju koristeći Shinyapps.io
Shiny je paket RStudio-a koji se koristi za pravljenje interaktivnih web aplikacija uz pomoć R programskog jezika.
Možete da napravite aplikaciju na posebnoj web stranici kao što je slučaj sa repopsi ili da vam bude deo R Markdown dokumenta ili da pravite takozvane Shiny dashboards. Možete takođe da unapredite Shiny aplikaciju uz pomoć CSS tema, htmlwidgets-a, ili JavaScript-a.
Shiny aplikacije se lako kreiraju. Nisu neophodne veštine za izradu web stranica. Ali ukoliko ih imate još bolje.
Kod za Shiny aplikaciju ima tri dela:
Prvo ćemo instalirati shiny paket i ostale pakete koji su neophodni za aplikaciju.
install.packages("shiny") #za shiny aplikaciju
install.packages("shinythemes") # teme koje ulepšavaju izgled aplikacije
install.packages("shinyWidgets") # uredjivanje dugmića ili nekih drugih delova aplikacije
install.packages("tidyverse") # za obradu i pripremanje podataka za vizuelni prikaz
install.packages("DT") # odličan paket za pravljenje tabela
install.packages("gsheet") # koristi se za uvoz google sheets
install.packages("writexl") # koristi se u delu za skidanje podataka u excel formatu
install.packages("httr") # služi za preuzimanje i skidanje podataka u csv-u sa linka Potom ćemo uvesti biblioteke koje su nam potrebne
Idite na sledeći link.
Za ovo koristimo gsheet biblioteku
repopsi1 <-repopsi
# Koristi se za dodavanje linkova na več postojeće informacije u koloni (to je važno za funkciju datatable)
repopsi1$`Source of the original instrument` <- ifelse(is.na(repopsi1$`Source of the original instrument`),
NA, paste0("<a href='", repopsi1$`Source of the original instrument`, "' target='_blank'>",
repopsi1$`Source of the original instrument`, " </a>"))
# Koristi se za pretvaranje u aktivni link za slanje na email adresu u koloni
repopsi1$`Contact email address` <- ifelse(is.na(repopsi1$`Contact email address` ),
NA, paste0("<a href='mailto:",repopsi1$`Contact email address` , "' target='_blank'>",
repopsi1$`Contact email address` ,"</a>"))repopsi1<- repopsi1%>%
unite(`Instrument name and version`, `Title in English`, Abbreviation, Version, sep = " | ",remove = FALSE, na.rm = TRUE)%>%
select(-c(`Title in English`,Abbreviation,Version))%>%
unite(`Contact person`, `Contact person`, `Contact email address`, sep = " | ",remove = FALSE, na.rm = TRUE) %>%
select(-`Contact email address`) %>%
unite(`Where to find the instrument?`, `Instrument availability`, `Link to instrument in the Repository`, `Link to instrument outside of the Repository`, sep = " | ",remove = FALSE,na.rm = TRUE)%>%
select(-c(`Instrument availability`, `Link to instrument in the Repository`, `Link to instrument outside of the Repository`))repopsi1<- repopsi1%>%
relocate(`Where to find the instrument?`, .after = `Instrument name and version`) %>%
relocate(`Citation of the original instrument`, .after = `Where to find the instrument?`) %>%
relocate(`Citation of the translation/adaptation`, .after = `Citation of the original instrument`) %>%
relocate(Keywords, .after = `Citation of the translation/adaptation`) %>%
relocate(`Contact person`, .after = Keywords)UI se, u slučaju repopsi aplikacije, sastoji od navbarPage koja ima sidebarPanel sa leve i mainPanel sa desne strane.Na ovaj način se uredjuje raspored elemenata aplikacije.
Pre samog sadržaja ovih panela postoji deo koji definiše temu, javaskript koji je važan za global pretragu tabele, css koji uredjuje boje i naslova same aplikacije
U ovom trenutku bismo pomenuli da www folder postoji da bi se u njega ubacile slike (logoi i slično), ako je kompleksniji css fajl ili javaskript.
strong() boldovan tekst
a(“tekst”/slika, href=“link”) linkovan tekst
style="" uredjivanje položaja boje slike, teksta i slicno
h2(),h3(),h4(),h5(), h6() veličina teksta
br() razmak
img() slika
align="" levo, desno, justified, centriran tekst
Najvažniji deo ui predstavljaju takozvani inputi. To su dakle različite vrste opcija gde se unose odredjene komande, podaci, gde će se pojaviti odredjeni grafikon a zatim se na server strani od tih unosa u realnom vremenu prikazuju tabele, grafikoni, skidaju podaci i slično u vidu output-a.
Ovo zapravo jeste najinteresantniji deo aplikacije. Svaki input ima svoj id koji mu vi dodeljujete i jako je važno da zapamtite kako ste ga nazvali.
U side panelu ove aplikacije ima 4 inputa (unos teksta za filtriranje i tri dugmeta za skidanje podataka) a u main panelu jedan (tabela).
sidebarPanel
mainPanel